Сервис Tsmsms
Предоставление программного интерфейса
Использование сервиса осуществляется при помощи методов на системной шине UBUS
| Метод | Описание |
|---|---|
"send_sms":{"phone":"String","text":"String"} |
Отправляет SMS на указанный номер |
"delete_sms_by_index":{"index":"Integer"} |
Удаляет SMS по указан индексу |
"read_all_sms":{} |
Выводит список всех полученных SMS |
"read_sms_by_index":{"index":"Integer"} |
Читает SMS по указанному индексу |
"get_count_of_received_sms":{} |
Выводит количество SMS в накопителе (заполненность накопителя) |
Результат выполнения команды и статусы ответа
После вызова команды ответ приходит 2 раза. Первый ответ со статусом (приходит сразу), второй ответ с результатом и статусом результата (приходит с задержкой, используется deferred request ubus).
| Статус | Описание |
|---|---|
ok |
Команда успешно выполнилась |
error |
Ошибка при выполнении команды |
timeout |
Произошел таймаут при выполнении команды |
busy |
Tsmsms сервис уже выполняет команду |
tsmodem_busy |
Tsmodem сервис занят другим сервисом |
started |
Началось выполнение команды |
Примеры вызова ubus команд
Уведомление о новой полученной SMS
При получении SMS модуль tsmodem отправляет AT ответ с PDU данными об SMS, модуль tsmsms делает парсинг SMS данных и создает событие на UBUS шине.
Событие tsmodem.sms NEW-SMS-RECEIVED отправляет данные для подписчиков:
| Поле | Описание |
|---|---|
status |
Статус UBUS ответа (Статусы из раздела: "Результат выполнения команды и статусы ответа") |
sender |
Номер отправителя |
date |
Дата получения SMS |
message |
Текст сообщения |
Структура файлов сервиса
├── app.lua
├── constants
│ ├── cms_error.lua
│ ├── state.lua
│ ├── tsmodem_driver_event.lua
│ └── ubus_response_status.lua
├── pdu_decoder.lua
├── pdu_encoder.lua
├── sms.lua
├── state_machine
│ ├── delete_sms_by_index.lua
│ ├── get_count_of_received_sms.lua
│ ├── main.lua
│ ├── read_all_sms.lua
│ ├── read_sms_by_index.lua
│ └── send_sms.lua
├── test
│ ├── run_test.lua
│ ├── test.lua
│ └── test_prev.lua
├── text_decoder.lua
├── text_encoder.lua
└── util.lua
| Файл | Описание |
|---|---|
constants/cms_error.lua |
Список CMS ошибок |
constants/state.lua |
Список состояний state machine |
constants/tsmodem_driver_event.lua |
Список состояний ошибок driver event |
constants/ubus_response_status.lua |
Список статусов ubus ответов |
state_machine/delete_sms_by_index.lua |
Содержит AT-команды удаления SMS по индексу |
state_machine/get_count_of_received_sms.lua |
Содержит AT-команды получения количества SMS |
state_machine/main.lua |
Главный файл машины состояний |
state_machine/read_all_sms.lua |
Содержит AT-команды чтение всех SMS |
state_machine/read_sms_by_index.lua |
Содержит AT-команды чтение SMS по индексу |
state_machine/send_sms.lua |
Содержит AT-команды отправки SMS |
test/run_test.lua |
Содержит и запускает тесты |
test/test_prev.lua |
Предыдущая версия тестов (весь код полностью в одном файле) |
test/test.lua |
Содержит методы тестов (библиотека) |
app.lua |
Точка входа, основной файл, запускаемый сервисом в автозагрузке устройства |
pdu_decoder.lua |
Конвертирует PDU формат в читаемый вид |
pdu_encoder.lua |
Конвертирует данные кусочка смс в PDU данные |
sms.lua |
Конвертирует данные смс в PDU формат для отправки |
text_decoder.lua |
Расшифровывает разные форматы в читаемый вид |
text_encoder.lua |
Конвертирует UTF-8 формат в его HEX представление |
util.lua |
Содержит вспомогательные функции |
Конфигурирование
$ uci show tsmsms
Ответ:
tsmsms.general=general
tsmsms.general.send_sms_max_attempts='3'
tsmsms.general.tsmodem_response_timeout='60'
tsmsms.general.send_email_if_error='0'
tsmsms.general.email_address='email@email.email'
tsmsms.general.debug='0'
| Опция | Описание |
|---|---|
send_sms_max_attempts |
Количество попыток отправки SMS |
tsmodem_response_timeout |
Таймаут ожидания ответа от Tsmodem модуля |
send_email_if_error |
Отправлять или нет Email письмо, если произошла ошибка |
email_address |
Email адрес на который отправить письмо при ошибке |
debug |
Включен debug режим или нет |
Режим "debug"
$ tsmsms debug